<?php

/*!
 * \file Projet.php
 * \namespace Site\ProjetBundle\Entity
 * \class Projet
 *
 * \author Antonin Barthélémy
 *
 * \brief Classe étant une entité et permettant de stocker un projet.
 */

namespace Site\ProjetBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Projet
 *
 * @ORM\Table()
 * @ORM\Entity
 */
class Projet
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\OneToOne(targetEntity="Site\SoutenanceBundle\Entity\Soutenance")
     */
     private $soutenance;

     /**
      * @ORM\ManyToOne(targetEntity="Site\GeneralBundle\Entity\Ue",inversedBy="projets")
      */
      private $ue;

     /**
      * @ORM\ManyToMany(targetEntity="Site\UtilisateurBundle\Entity\Utilisateur",cascade={"persist"})
      *
      */
      private $utilisateurs;

      /**
       * @ORM\OneToMany(targetEntity="Site\UtilisateurBundle\Entity\Etudiant",mappedBy="projet")
       */
       private $etudiants;

    /**
     * @var integer
     *
     * @ORM\Column(name="nbMaxEtud", type="integer")
     */
    private $nbMaxEtud;

    /**
     * @var integer
     *
     * @ORM\Column(name="nbMinEtud", type="integer")
     */
    private $nbMinEtud;

    /**
     * @var integer
     *
     * @ORM\Column(name="nbInscritsEtud", type="integer")
     */
    private $nbInscritsEtud;

    /**
     * @var string
     *
     * @ORM\Column(name="titre", type="string", length=255)
     */
    private $titre;

    /**
     * @var string
     *
     * @ORM\Column(name="description", type="text")
     */
    private $description;

    /**
     * @var string
     *
     * @ORM\Column(name="lien", type="string", length=255,nullable=true)
     */
    private $lien;

    /**
     * @var string
     *
     * @ORM\Column(name="fichier", type="string", length=255, nullable=true)
     */
    private $fichier;

    /**
     * @ORM\ManyToOne(targetEntity="Site\UtilisateurBundle\Entity\Utilisateur")
     * @ORM\JoinColumn(nullable=false)
     */
     private $enseignant;

    /**
     * Get id
     *
     * @return integer
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set nbMaxEtud
     *
     * @param integer $nbMaxEtud
     * @return Projet
     */
    public function setNbMaxEtud($nbMaxEtud)
    {
        $this->nbMaxEtud = $nbMaxEtud;

        return $this;
    }

    /**
     * Get nbMaxEtud
     *
     * @return integer
     */
    public function getNbMaxEtud()
    {
        return $this->nbMaxEtud;
    }

    /**
     * Set nbMinEtud
     *
     * @param integer $nbMinEtud
     * @return Projet
     */
    public function setNbMinEtud($nbMinEtud)
    {
        $this->nbMinEtud = $nbMinEtud;

        return $this;
    }

    /**
     * Get nbMinEtud
     *
     * @return integer
     */
    public function getNbMinEtud()
    {
        return $this->nbMinEtud;
    }

    /**
     * Set titre
     *
     * @param string $titre
     * @return Projet
     */
    public function setTitre($titre)
    {
        $this->titre = $titre;

        return $this;
    }

    /**
     * Get titre
     *
     * @return string
     */
    public function getTitre()
    {
        return $this->titre;
    }

    /**
     * Set description
     *
     * @param string $description
     * @return Projet
     */
    public function setDescription($description)
    {
        $this->description = $description;

        return $this;
    }

    /**
     * Get description
     *
     * @return string
     */
    public function getDescription()
    {
        return $this->description;
    }

    /**
     * Set lien
     *
     * @param string $lien
     * @return Projet
     */
    public function setLien($lien)
    {
        $this->lien = $lien;

        return $this;
    }

    /**
     * Get lien
     *
     * @return string
     */
    public function getLien()
    {
        return $this->lien;
    }

    /**
     * Set fichier
     *
     * @param string $fichier
     * @return Projet
     */
    public function setFichier($fichier)
    {
        $this->fichier = $fichier;

        return $this;
    }

    /**
     * Get fichier
     *
     * @return string
     */
    public function getFichier()
    {
        return $this->fichier;
    }
    /**
     * Constructor
     */
    public function __construct()
    {
        $this->utilisateurs = new \Doctrine\Common\Collections\ArrayCollection();
        $this->etudiants = new \Doctrine\Common\Collections\ArrayCollection();
	$this->soutenance = null;
    }

    /**
     * Set nbInscritsEtud
     *
     * @param integer $nbInscritsEtud
     * @return Projet
     */
    public function setNbInscritsEtud($nbInscritsEtud)
    {
        $this->nbInscritsEtud = $nbInscritsEtud;

        return $this;
    }

    /**
     * Get nbInscritsEtud
     *
     * @return integer
     */
    public function getNbInscritsEtud()
    {
        return $this->nbInscritsEtud;
    }

    /**
     * Set soutenance
     *
     * @param \Site\SoutenanceBundle\Entity\Soutenance $soutenance
     * @return Projet
     */
    public function setSoutenance(\Site\SoutenanceBundle\Entity\Soutenance $soutenance)
    {
        $this->soutenance = $soutenance;

        return $this;
    }

    /**
     * Get soutenance
     *
     * @return \Site\SoutenanceBundle\Entity\Soutenance
     */
    public function getSoutenance()
    {
        return $this->soutenance;
    }

    /**
     * Set ue
     *
     * @param \Site\GeneralBundle\Entity\Ue $ue
     * @return Projet
     */
    public function setUe(\Site\GeneralBundle\Entity\Ue $ue)
    {
        $this->ue = $ue;

        return $this;
    }

    /**
     * Get ue
     *
     * @return \Site\GeneralBundle\Entity\Ue
     */
    public function getUe()
    {
        return $this->ue;
    }

    /**
     * Add utilisateurs
     *
     * @param \Site\UtilisateurBundle\Entity\Utilisateur $utilisateurs
     * @return Projet
     */
    public function addUtilisateur(\Site\UtilisateurBundle\Entity\Utilisateur $utilisateurs)
    {
        $this->utilisateurs[] = $utilisateurs;

        return $this;
    }

    /**
     * Remove utilisateurs
     *
     * @param \Site\UtilisateurBundle\Entity\Utilisateur $utilisateurs
     */
    public function removeUtilisateur(\Site\UtilisateurBundle\Entity\Utilisateur $utilisateurs)
    {
        $this->utilisateurs->removeElement($utilisateurs);
    }

    /**
     * Get utilisateurs
     *
     * @return \Doctrine\Common\Collections\Collection
     */
    public function getUtilisateurs()
    {
        return $this->utilisateurs;
    }

    /**
     * Add etudiants
     *
     * @param \Site\UtilisateurBundle\Entity\Etudiant $etudiants
     * @return Projet
     */
    public function addEtudiant(\Site\UtilisateurBundle\Entity\Etudiant $etudiants)
    {
        $this->etudiants[] = $etudiants;
		$this->nbInscritsEtud++;
        return $this;
    }

    /**
     * Remove etudiants
     *
     * @param \Site\UtilisateurBundle\Entity\Etudiant $etudiants
     */
    public function removeEtudiant(\Site\UtilisateurBundle\Entity\Etudiant $etudiants)
    {
        $this->etudiants->removeElement($etudiants);
    }

    /**
     * Get etudiants
     *
     * @return \Doctrine\Common\Collections\Collection
     */
    public function getEtudiants()
    {
        return $this->etudiants;
    }

    /**
     * Set enseignant
     *
     * @param \Site\UtilisateurBundle\Entity\Utilisateur $enseignant
     * @return Projet
     */
    public function setEnseignant(\Site\UtilisateurBundle\Entity\Utilisateur $enseignant = null)
    {
        $this->enseignant = $enseignant;

        return $this;
    }

    /**
     * Get enseignant
     *
     * @return \Site\UtilisateurBundle\Entity\Utilisateur
     */
    public function getEnseignant()
    {
        return $this->enseignant;
    }
}
